Amazon Linux 2023 にインストールした Tableau Server でバックアップを取得する

Amazon Linux 2023 にインストールした Tableau Server でバックアップを取得する

Clock Icon2024.12.06

はじめに

バージョン 2023.3.1 以降の Tableau Server は OS 要件として Amazon Linux 2023 をサポートしています。
Amazon Linux 2023 にインストールした Tableau Server でバックアップを取得し S3 に配置するまでをやってみましたので、本記事で内容をまとめてみます。

前提条件

以下の環境で Tableau Server をインストール済みです。

  • Tableau Server バージョン 2024.2.4
    • 単一サーバー構成
  • インスタンスタイプ:m5.4xlarge
    • vCPU:16
    • メモリ:64 GB
  • ボリューム
    • ルートボリューム:8 GB
    • 追加ボリューム:30 GB
      • マウント先:/opt/tableau
  • Tableau Server のインストールディレクトリ
    • 既定:opt/tableau/tableau_server
  • データディレクトリ(バックアップなどの出力先ディレクトリ)
    • opt/tableau/data/
    • ※既定(/var/opt/tableau/tableau_server)から変更

インストールディレクトリ構成は以下の通りです。

/opt/tableau
├── data
│   ├── config
│   ├── data
│   ├── logs
│   └── temp
├── tableau_driver
│   └── jdbc
└── tableau_server
    ├── manifests
    └── packages

インストール手順は以下をご参照ください。

https://dev.classmethod.jp/articles/tableau-server-install-on-amazon-linux-2023-try/

Tableau Server におけるバックアップ

前提として Tableau Server で取得可能なバックアップは以下の2種類存在します。ここではそれぞれを取得対象とします。

  • Tableau Server で管理されるデータ
    • Tableau Server 内部の PostgreSQL データベース・リポジトリ、ワークブックとユーザーのメタデータ、データ抽出ファイル、サイト構成データ
    • tsm maintenance backup コマンドで取得する(tsbak 拡張子でバックアップファイルが生成される)
    • バックアップファイルは、バックアップが作成されたバージョンと同じか新しいバージョンの Tableau Server バージョンにのみ復元可能
    • コマンドオプションでスケジュール実行による取得も可能
  • 構成およびトポロジデータ
    • サーバーを完全に復旧するために必要なサーバー構成情報のほとんど
    • SMTP、アラート、一部の認証アセット など
    • tsm settings exportコマンドで取得する(json形式のファイル)
    • ※トポロジ データ
      • 単一サーバーおよび複数ノードでの展開時における Tableau Server プロセスを構成する方法を定義したもの

詳細は以下をご参照ください。

https://help.tableau.com/current/server-linux/ja-jp/backup_restore.htm
https://dev.classmethod.jp/articles/tableau-server-backup-restore-procedure/

手順

本記事では以下を行います。

  • バックアップの配置先となる S3 バケットを作成
  • バックアップの出力先を指定
  • バックアップを取得
  • 取得したバックアップを S3 に配置

バックアップの配置先となる S3 バケットを作成

S3 バケットの作成

インスタンス上で取得した各バックアップファイルは、最終的に S3 に配置することとします。インスタンスと同じリージョンで S3 バケットを作成しておきます。

EC2 の IAM ロールを更新

EC2 インスタンスから S3 バケットにバックアップファイルを配置するために、ここでは以下の IAM ロールを付与しています。

S3 用の IAM ポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket-name>",
                "arn:aws:s3:::<bucket-name>/*"
            ]
        }
    ]
}

信頼関係

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

バックアップの出力先を指定

デフォルトの出力先:Tableau Server で管理されるデータ

Tableau Server のデータディレクトリを既定の場所に構成している場合tsm maintenance backup コマンドで取得するメインのバックアップファイルの既定の出力先は/var/opt/tableau/tableau_server/data/tabsvc/files/backups/です。

本記事の構成では、データディレクトリの構成先として/opt/tableau/data とし、既定から変更しているので、バックアップファイルの出力先は以下の通りとなります。

$ tsm configuration get -k basefilepath.backuprestore
/opt/tableau/data/data/tabsvc/files/backups

デフォルトの出力先:構成およびトポロジデータ

こちらは構成ファイルは出力時にディレクトリを指定可能です。

バックアップファイルの出力先を作成

ここでは以下に別のバックアップ専用のディレクトを作成し、出力先としました。

sudo mkdir /opt/tableau/tableau_backups

また、各バックアップファイルごとに出力先を分けることとします。

sudo mkdir /opt/tableau/tableau_backups/setting_exports
sudo mkdir /opt/tableau/tableau_backups/backups

この時点でディレクトリ構成は以下のようになっています。

$ sudo tree /opt/tableau -L 2 -d
/opt/tableau
├── data
│   ├── config
│   ├── data
│   ├── logs
│   └── temp
├── tableau_backups
│   ├── backups
│   └── setting_exports
├── tableau_driver
│   └── jdbc
└── tableau_server
    ├── manifests
    └── packages

バックアップ取得先ディレクトリのパーミッションを構成

Linux 版の Tableau Server をインストールする際は、実行ユーザーとして tableau ユーザーが作成され tableau グループに追加されます。

ここでは各種バックアップファイルの出力先ディレクトリを変更したので、ファイルが正常に出力されるには、 ディレクトリに対する書き込み権限が必要なので設定します。

設定前の各ディレクトリに対する権限は以下の通りでした。

ls -l /opt/tableau/tableau_backups
合計 0
drwxr-xr-x. 2 root root 6 124 11:40 backups
drwxr-xr-x. 2 root root 6 124 11:40 setting_exports

以下は構成およびトポロジデータのエクスポートコマンドですが、この場合ディレクトリに対する書き込み権限がないので出力できません。

[ec2-user@tabsrv-node1 ~]$ tsm settings export --output-config-file /opt/tableau/tableau_backups/setting_exports/output_file.json
要求の処理時にサーバーで予期せぬエラーが発生しました。詳細については、サーバー ログを参照してください。

詳細については、'/home/ec2-user/.tableau/tsm/tsm.log' を参照してください。

サーバー ログ情報については、管理コントローラー プロセスを実行している Tableau Server ノードで '/opt/tableau/data/data/tabsvc/logs/tabadmincontroller/tabadmincontroller_*.log' を参照してください。

ここでは以下を参考に書き込み権限を与えます。

https://help.tableau.com/current/server-linux/ja-jp/file_permissions_tsm.htm

はじめに、ディレクトリの所有権を tableau グループに変更します。

sudo chgrp tableau /opt/tableau/tableau_backups/backups
sudo chgrp tableau /opt/tableau/tableau_backups/setting_exports

続けて、ここではグループに読み取り、書き込みおよび実行権限を付与しました。

sudo chmod g+rwx /opt/tableau/tableau_backups/backups
sudo chmod g+rwx /opt/tableau/tableau_backups/setting_exports

手順は後述しますが、これで各種ファイルを出力できるようになります。

Tableau Server で管理されるデータの出力先を変更

Tableau Server で管理されるデータの出力先を変更する際はtsm configuration setで設定値を変更する必要があります。

tsm configuration set -k basefilepath.backuprestore -v <出力先のパス>

ここでは以下の通り実行しました。

tsm configuration set -k basefilepath.backuprestore -v /opt/tableau/tableau_backups/backups

上記の設定後は、tsm pending-changes apply による変更の適用が必要です。

tsm pending-changes apply

変更の適用を確認します。

$ tsm configuration get -k basefilepath.backuprestore
/opt/tableau/tableau_backups/backups

変更を適用後、Tableau Server で管理されるデータの場合はtsm maintenance validate-backup-basefilepathでフォルダのパーミッション設定を検証できます。

$ tsm maintenance validate-backup-basefilepath
ベース filepath パーミッションのバックアップ/復元の検証を開始しています
ジョブ ID '9'、タイムアウトは 60 分です。
25% - Tableau Server 管理コントローラーが、バックアップ ファイルにアクセスできることを確認中です。
50% - バックアップ サービスをインストールしています。。
75% - バックアップ復元サービスが、バックアップ ファイルにアクセスできることを確認中です。
100% - バックアップ サービスをアンインストールしています。。
ベース filepath パーミッションのバックアップ/復元が正常に検証されました。

https://help.tableau.com/current/server-linux/ja-jp/cli_maintenance_tsm.htm#tsmValidateBackupBasefilepath

バックアップを取得

Tableau Server で管理されるデータ

こちらはtsm maintenance backupで取得します。オプションでファイル名の指定やバックアップ ファイル名の末尾に現在の日付を追加することもできます。

例えば、以下のようにバックアップを取得できます。

tsm maintenance backup -f tableau-server-data -d

この場合、以下の名称でバックアップファイルを取得できます。

$ ls /opt/tableau/tableau_backups/backups
tableau-server-data-2024-12-04.tsbak

2020.4.0 以降では、tsm コマンドを使用してバックアップをスケジュールすることもできます。また、データ量が多いとバックアップ取得は時間がかかります。その場合に使用できるオプションも用意されていますので、詳細は以下をご参照ください。

https://help.tableau.com/current/server-linux/ja-jp/cli_maintenance_tsm.htm#tsm-maintenance-backup

構成およびトポロジデータ

構成ファイルはtsm settings exportで取得できます。以下のようにオプションでファイルの出力先と名称を指定し、実行します。

tsm settings export --output-config-file /opt/tableau/tableau_backups/setting_exports/output_file.json

https://help.tableau.com/current/server-linux/ja-jp/cli_settings_tsm.htm#TSMExport

各ファイルを確認

$ ls /opt/tableau/tableau_backups/*
/opt/tableau/tableau_backups/backups:
tableau-server-data-2024-12-04.tsbak

/opt/tableau/tableau_backups/setting_exports:
output_file.json

取得したバックアップを S3 に配置

S3 のパス構成

ここでは以下のパス構成でファイルを配置するとします。

  • Tableau Server で管理されるデータ
s3://<bucket-name>/maintenance-backup/YYYY-MM-dd/<ファイル名>
  • 構成およびトポロジデータ
s3://<bucket-name>/setting/YYYY-MM-dd/<ファイル名>

AWS CLI で配置

ファイルの送付には AWS CLI を使用します。EC2 インスタンスに IAM ロールを関連付けているのでそのまま以下のように実行できます。

DATE=$(date +%Y-%m-%d)
# Tableau Server で管理されるデータ
aws s3 cp /opt/tableau/tableau_backups/backups/tableau-server-data-2024-12-04.tsbak s3://<bucket-name>/maintenance-backup/$DATE/tableau-server-data-2024-12-04.tsbak

# 構成およびトポロジデータ
aws s3 cp /opt/tableau/tableau_backups/setting_exports/output_file.json s3://<bucket-name>/setting/$DATE/output_file.json

S3 を確認

$ aws s3 ls s3://<bucket-name>/ --recursive
2024-12-04 14:22:56   71017033 maintenance-backup/2024-12-04/tableau-server-data-2024-12-04.tsbak
2024-12-04 14:31:26       6795 setting/2024-12-04/output_file.json

バックアップファイルを送付できました。

さいごに

Amazon Linux 2023 にインストールした Tableau Server でバックアップを取得し S3 に配置するまでを試してみました。既定のディレクトリから変更する場合は、パーミッション周りに注意が必要です。スケジュール実行も試してこちらは別の記事でご紹介できればと思います。
こちらの内容が何かの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.